03-ASG생성및정책설정
ASG 생성 및 정책 설정
목표
Launch Template을 사용해서 Auto Scaling Group을 생성하고 스케일링 정책을 설정합니다.
Auto Scaling Group 생성
1단계: ASG 생성 시작
- EC2 콘솔 → 왼쪽 메뉴 Auto Scaling 그룹 클릭
- Auto Scaling 그룹 생성 버튼 클릭
2단계: 시작 템플릿 선택
Auto Scaling 그룹 이름:
webapp-web-asg
시작 템플릿:
webapp-web-template선택- 버전:
Latest선택
다음 클릭
3단계: 인스턴스 시작 옵션
네트워크:
- VPC: 여러분의 VPC 선택 (예: webapp-vpc)
가용 영역 및 서브넷:
- 기존 Public 서브넷 (ap-northeast-2a) 선택
webapp-public-subnet-2c(ap-northeast-2c) 선택
다음 클릭
4단계: 로드 밸런싱 설정
로드 밸런싱:
- 기존 로드 밸런서에 연결 선택
기존 로드 밸런서 대상 그룹:
webapp-web-targets선택
상태 확인:
- ELB 상태 확인 켜기 체크
- 상태 확인 유예 기간:
300초 (5분)
다음 클릭
5단계: 그룹 크기 및 크기 조정 정책
그룹 크기:
- 원하는 용량:
2 - 최소 용량:
1 - 최대 용량:
4
크기 조정 정책:
- 대상 추적 크기 조정 정책 선택
크기 조정 정책 이름:
webapp-web-scaling-policy
지표 유형:
- 평균 CPU 사용률 선택
대상 값:
70(70% CPU 사용률 목표)
다음 클릭
6단계: 알림 및 태그 (건너뛰기)
다음 클릭 (기본값 사용)
7단계: 검토 및 생성
설정 내용 확인 후 Auto Scaling 그룹 생성 클릭
ASG 동작 확인
인스턴스 생성 확인
- Auto Scaling 그룹 →
webapp-web-asg클릭 - 인스턴스 탭에서 새로 생성된 인스턴스 2대 확인
- 활동 탭에서 생성 과정 확인
인스턴스 생성에는 5-10분 정도 걸립니다.
Target Group 자동 등록 확인
- EC2 콘솔 → 대상 그룹 →
webapp-web-targets클릭 - 대상 탭에서 총 3대 인스턴스 확인:
- 기존 Web 서버 1대
- ASG에서 새로 생성된 서버 2대
상태 확인
모든 인스턴스가 healthy 상태가 될 때까지 5-10분 대기
웹 사이트 동작 확인
ALB를 통한 접속
http://webapp-alb-xxxxxxx.ap-northeast-2.elb.amazonaws.com/
확인사항:
- 여러 번 새로고침해도 정상 동작
- 각 서버마다 다른 Instance ID 표시
- Round Robin 방식으로 서버 변경 확인
각 서버별 개별 확인
새로 생성된 각 서버의 Public IP로 직접 접속:
서버1: http://새서버1-Public-IP/
서버2: http://새서버2-Public-IP/
서버3: http://새서버3-Public-IP/
모든 서버에서 동일한 기능이 동작해야 함:
- 정적 파일:
/webapp/index.html - 동적 파일:
/webapp/(JSP 프록시)
중요: 기존 수동 서버 제거 시점
주의: 기존 수동 서버는 ASG 서버들이 완전히 준비된 후에만 제거합니다.
제거 전 확인사항
-
ASG 인스턴스 상태 확인:
- Target Group에서 모든 ASG 서버가
healthy상태 - 최소 2대 이상의 ASG 서버가 정상 동작
- Target Group에서 모든 ASG 서버가
-
웹 사이트 동작 확인:
http://ALB-DNS-Name/webapp/
→ 정상 동작 확인
→ 여러 번 새로고침해서 다른 서버 ID 표시 확인
기존 Web 서버 제거 절차
1단계: Target Group에서 제거
- 대상 그룹 →
webapp-web-targets→ 대상 탭 - 기존 수동 서버 선택 → 등록 취소
- 5분 대기 후 ALB 동작 재확인
2단계: EC2 인스턴스 종료
- 인스턴스 → 기존 Web 서버 선택
- 인스턴스 상태 → 인스턴스 종료
결과: 이제 모든 Web 서버가 Auto Scaling으로 관리되고 자동 복구됩니다.
스케일링 테스트
CPU 부하 테스트
ASG가 실제로 동작하는지 테스트해봅시다.
1. 서버 하나에 SSH 접속:
# ASG로 생성된 서버 중 하나에 접속
ssh -i webapp-keypair.pem ec2-user@새서버-Public-IP
2. CPU 부하 생성:
# CPU 사용률을 80%로 올리기
stress --cpu 1 --timeout 600s
# 또는 stress가 없으면 간단한 무한루프
while true; do echo "CPU load test" > /dev/null; done
3. Auto Scaling 동작 확인:
- 5-10분 후 Auto Scaling 그룹 → 활동 탭 확인
- CPU 사용률이 70% 이상 지속되면 새 인스턴스 추가됨
4. 부하 중지:
# Ctrl+C로 부하 테스트 중지
# 또는 pkill stress
고급 스케일링 정책 추가 (선택사항)
수동 스케일링 정책
기본 정책 외에 수동 스케일링 정책도 추가할 수 있습니다.
1. 정책 생성:
- Auto Scaling 그룹 →
webapp-web-asg선택 - 자동 크기 조정 탭 → 정책 생성 클릭
Scale Out 정책:
- 정책 이름:
scale-out-policy - 정책 유형: 단순 크기 조정
- 크기 조정 작업: 추가 1 용량 단위
- 대기 시간:
300초
Scale In 정책:
- 정책 이름:
scale-in-policy - 정책 유형: 단순 크기 조정
- 크기 조정 작업: 제거 1 용량 단위
- 대기 시간:
300초
ASG 설정 요약
현재 구성
Auto Scaling Group: webapp-web-asg
├── 최소 용량: 1대
├── 원하는 용량: 2대
├── 최대 용량: 4대
├── 배치: 2개 가용영역 (2a, 2c)
├── Launch Template: webapp-web-template
└── Target Group: webapp-web-targets 자동 등록
스케일링 조건
Target Tracking:
- CPU 70% 목표로 자동 조절
- 높으면 서버 추가, 낮으면 서버 제거
Health Check:
- ELB Health Check 활성화
- 5분 유예 기간
- 비정상 서버 자동 교체
문제 해결
인스턴스가 unhealthy 상태일 때
1. User Data 로그 확인:
ssh -i webapp-keypair.pem ec2-user@서버IP
sudo cat /var/log/cloud-init-output.log
sudo cat /var/log/user-data.log
2. Apache 상태 확인:
sudo systemctl status httpd
sudo systemctl restart httpd # 필요시
3. 프록시 설정 확인:
sudo cat /etc/httpd/conf.d/webapp-proxy.conf
curl http://localhost/webapp/ # 로컬에서 테스트
ASG에서 인스턴스가 생성되지 않을 때
1. Launch Template 설정 확인
2. 서브넷 용량 확인 (IP 주소 부족)
3. 보안 그룹 설정 확인
4. IAM 권한 확인
스케일링이 동작하지 않을 때
1. CloudWatch 메트릭 확인:
- EC2 → 인스턴스 → 인스턴스 선택 → 모니터링 탭
- CPU 사용률이 올바르게 수집되는지 확인
2. 스케일링 정책 확인:
- Auto Scaling 그룹 → 자동 크기 조정 탭
- 정책이 올바르게 설정되어 있는지 확인
완료 체크리스트
운영 팁
점진적 배포
새 Launch Template 버전으로 인스턴스 교체:
- 새 버전의 Launch Template 생성
- ASG에서 인스턴스 새로 고침 기능 사용
- 한 번에 하나씩 교체하여 무중단 배포
비용 최적화
- 새벽 시간대에는 최소 용량을 1대로 조정
- 예상 트래픽 패턴에 따라 예약 스케일링 사용
모니터링
- CloudWatch에서 ASG 메트릭 모니터링
- 스케일링 활동 로그 정기 확인
Auto Scaling Group 구성 완료 이제 Multi-AZ RDS로 데이터베이스도 고가용성으로 만들어봅시다.
다음 단계: AWS EDU/Archive/조선대학교 AWS 멘토링/Week3.5-HA-Scalable-WebService/04-Multi-AZ-RDS/01-Multi-AZ-RDS이해
관련 문서: AWS EDU/Archive/조선대학교 AWS 멘토링/Week3.5-HA-Scalable-WebService/03-Auto-Scaling-Group/02-Launch-Template생성, AWS EDU/Archive/조선대학교 AWS 멘토링/Edu Architecture/README